UNZIP(1) | Manuel de l'utilisateur Linux | UNZIP(1) |
NOM¶
unzip - Lister, tester et extraire des fichiers compressés dans une archive ZIP
SYNOPSIS¶
unzip [-Z] [-cflptuvz[abjnoqsCLMVX$/]] file[.zip] [file(s) ...] [-x xfile(s) ...] [-d exdir]
DESCRIPTION¶
unzip va lister, tester ou extraire des fichiers à partir d'une archive ZIP, courante sur les systèmes MS-DOS. Le comportement par défaut (sans options) est l'extraction vers le dossier courant (et ses sous-dossiers) de tous les fichiers dans l'archive ZIP spécifiée. Un programme complémentaire, zip(1L), crée les archives ZIP ; ces deux programmes sont compatibles avec les archives créées par PKZIP et PKUNZIP pour MS-DOS de PKWARE, mais dans quelques cas les options ou le comportement par défaut diffèrent.
PARAMÈTRES¶
- fichier[.zip]
- Chemin de(s) archive(s) ZIP. Si le nom contient un joker, les fichiers correspondants sont traités dans l'ordre déterminé par le système d'exploitation (ou le système de fichiers). Seul le nom peut contenir un joker ; le chemin lui-même ne peut pas. Les expressions avec des jokers sont similaires à celles de egrep(1) pur UNIX et peuvent contenir :
- *
- équivaut à tout paquet de caractères (même de taille 0)
- ?
- équivaut à tout caractère unique
- [...]
- équivaut à un des caractères trouvés entre les traits verticaux ; les plages sont spécifiés par un caractère, un trait horizontal, et un caractère de fin ; si un « ! » ou un « ^ » suit le trait vertical de gauche, alors la plage est exclue. (c'est-à-dire que tous les caractères sauf ceux spécifiés sont recherchés.)
- (Assurez-vous d'encadrer par des guillemets tout caractère qui peut être interprété ou modifié par le système d'exploitation, particulièrement sous Unix et VMS.) Si aucune occurrence n'est trouvée, le nom est considéré littéral ; si ce cas aussi échoue, le suffixe .zip est ajouté. Remarquez que les archives auto-extractibles sont supportées, de même que n'importe quelle autre archive ZIP ; il faut seulement spécifier le suffixe .exe (le cas échéant) explicitement.
- [fichier(s)]
- Une liste optionnelle des membres de l'archive à traiter, séparés par des espaces. (Les versions VMS compilées avec VMSCLI défini doivent plutôt séparer les fichiers avec des virgules. Voir -v dans OPTIONS ci-dessous.) Des expressions (jokers) peuvent être utilisés pour spécifier plusieurs membres ; voir ci-dessus. Encore une fois, assurez-vous de protéger les expressions qui peuvent être interprétées ou modifiées par le système d'exploitation.
- [-x xfile(s)]
- Une liste optionnelle des membres de l'archive à exclure du traitement. Étant donné que les jokers sont valides pour les séparateurs de dossiers (« / »), cette option peut être utilisée pour exclure tout fichier se trouvant dans un sous-dossier. Par exemple, « unzip foo *.[ch] -x */* » va extraire tous les fichiers source C dans le dossier principal, mais pas dans les sous-dossiers. Sans l'option -x, tous les fichiers source C dans tous les dossier auraient été extraits.
- [-d exdir]
- Un dossier optionnel où seront extraits les fichiers. Par défaut, tous les fichiers et sous-dossiers sont recréés dans le dossier courant ; l'option -d permet l'extraction vers un dossier donné (si vous avez la permission d'y écrire). Cette option ne doit pas être à la fin de la ligne de commande ; elle est aussi acceptée avant le nom du fichier zip (avec les options normales), immédiatement après le nom, ou entre les fichier(s) et l'option -x. L'option et le dossier doivent être concaténés sans aucun espace entre eux, mais remarquez que ceci peut changer le comportement normal de l'environnement. En particulier, « -d ~ » (tilde) est interprété par les environnements Unix comme le nom du dossier racine de l'utilisateur courant, mais « -d~ » est traité comme un sous-dossier littéral « ~ » du dossier courant.
OPTIONS¶
Remarquez que, afin de supporter du matériel obsolète, l'écran d'aide de unzip est limité à 22 ou 23 lignes et devrait par conséquent être considéré comme une partie basique de la syntaxe de unzip plutôt que comme une liste exhaustive de tous les paramètres. La liste exhaustive suit :
- -Z
- Mode de zipinfo(1L). Si le premier paramètre de la ligne de commande est -Z, les autres paramètres sont considérés comme concernant zipinfo(1L). Regardez la page de manuel appropriée pour avoir une description de ces options.
- -A
- [OS/2, Unix DLL] affiche une aide extensive sur l'interface de programmation de la DLL (API).
- -c
- extrait les fichiers vers la sortie standard/l'écran (« CRT »). Ce paramètre est similaire à -p à l'exception que le nom de chaque fichier est affiché avant son extraction, que le paramètre -a est autorisé, et qu'une conversion ASCII-EBCDIC est automatiquement effectuée si nécessaire. Cette option n'est pas listée dans l'écran d'utilisation de unzip.
- -f
- rafraîchit les fichiers existants, cad. n'extrait que les fichiers qui sont déjà sur le disque et qui sont plus récents que la copie sur le disque. Par défaut unzip demande avant d'écraser, mais l'option -o permet de supprimer les questions. Remarquez que sous beaucoup de systèmes d'exploitation, la variable de faisceau horaire (TZ) doit être définie correctement afin que les options -f et -u fonctionnent correctement (sous Unix cette variable est normalement définie automatiquement). Les raisons à ceci sont un peu subtiles mais ont un rapport avec les différences entre le format des dates DOS (toujours en temps local) et le format des dates Unix (toujours en GMT) et la nécessité de comparer les deux. Une valeur typique de TZ est « MET-1MEST » (fuseau Pacifique US avec ajustement automatique des heures d'été/hiver).
- -l
- liste les fichiers dans l'archive (format court). Les noms, la taille non compactée des fichiers et leurs jour et heure de modification sont affichés, ainsi que les totaux pour tous les fichiers spécifiés. Si UnZip a été compilé avec OS2_EAS défini, l'option -l liste aussi les colonnes comportant la taille des attributs étendus OS/2 (EAs) et les listes de contrôle d'accès OS/2 (ACLs). De plus, le commentaire du fichier zip et les commentaires individuels des entrées (le cas échéant) sont affichés. Si un fichier a été archivé à partir d'un système qui ne gère pas la casse (par exemple, l'ancien système de fichiers MS-DOS FAT) et que l'option -L a été donnée, le nom du fichier est converti en minuscules et est préfixé avec un accent circonflexe (^).
- -p
- extrait les fichiers vers le tube (stdout). Rien d'autre que les données du fichier n'est envoyé vers stdout, et les fichiers sont toujours extraits en mode binaire, exactement comme ils ont été compactés (pas de conversions).
- -t
- teste les fichiers archive. Cette option extrait chaque fichier spécifié en mémoire et compare le CRC (contrôle de redondance cyclique, un contrôle de somme amélioré) du fichier décompacté avec le CRC stocké dans l'archive.
- -T
- [la plupart des OS] règle la date des archives sur le fichier le plus récent de chacune. Ceci correspond à l'option de zip -go à la différence près qu'elle peut être utilisée avec des jokers pour les noms d'archive (ex. « unzip -T \*.zip ») et est beaucoup plus rapide.
- -u
- met à jour les fichiers existants et crée de nouveaux si nécessaire. Cette option agit comme -f, décompactant (avec confirmation) les fichiers qui sont plus récents que ceux de même nom sur le disque, et en plus elle extrait ceux qui n'existent pas encore sur le disque. Voir -f ci-dessus pour l'information sur les réglages corrects de fuseau horaire.
- -v
- Mode bavard ou affichage du diagnostic des informations de version. Cette option a évolué et se comporte maintenant comme à la fois une option et un modificateur. En tant qu'option elle a deux rôles : quand un fichier zip est spécifié sans aucune autre option, -v liste les fichiers archivés de manière étendue, ajoute à l'information de base de -l la méthode de compactage, la taille compactée, le ratio de compactage et le CRC 32-bit. Quand aucun fichier zip n'est spécifié (c.-à-d. que la commande complète est simplement « unzip -v »), un écran de diagnostic est affiché. En plus de l'en-tête normal avec la date de sortie et la version, unzip liste l'adresse du site ftp Info-ZIP et où trouver une liste d'autres sites ftp et non-ftp ; le système d'exploitation pour lequel il a été compilé, ainsi que (probablement) le matériel sur lequel il a été compilé, le compilateur et la version utilisée, et la date de compilation ; toute option de compilation qui peut affecter le fonctionnement du programme (voir aussi DECRYPTAGE ci-dessous) ; et toute option de variable d'environnement qui peut faire de même (voir OPTIONS D'ENVIRONNEMENT ci-dessous). Comme modificateur il travaille avec d'autres options (ex. -t) pour produire plus de détails ou des informations de débogage ; ceci n'est pas encore entièrement implémenté mais le sera dans les versions futures.
- -z
- affiche seulement le commentaire de l'archive.
MODIFICATEURS¶
- -a
- convertit les fichiers texte. Normalement tous les fichiers sont extraits identiques à l'original. L'option -a entraîne une conversion automatique des fichiers détectés par zip comme de type texte (ceux avec l'étiquette `t' label dans les listings de zipinfo, au lieu de « b »), convertissant les fins de ligne, les caractères de fin de fichier et le jeu de caractères lui-même si nécessaire. (Par exemple, les fichiers Unix utilisent des LF pour une fin de ligne (EOL) et n'ont pas de marqueur de fin de fichier (EOF) ; Macintoshes utilisent des CR comme EOL ; et la plupart des systèmes d'exploitation PC utilisent CR+LF pour EOL et contrôle-Z pour EOF. De plus, les mainframes IBM et le Michigan Terminal System utilisent EBCDIC plutôt que le jeu de caractères plus commun ASCII, et NT supporte l'Unicode.) Remarquez que l'identification par zip des fichiers texte n'est aucunement parfaite ; quelques fichiers « texte » peuvent être des fichiers binaires et vice versa. Du coup, unzip affiche « [text] » ou « [binary] » comme contrôle visuel pour chaque fichier qu'il extrait quand l'option -a est utilisée. L'option -aa force l'extraction de tous les fichiers comme texte, sans tenir compte du type supposé.
- -b
- [général] traite tous les fichiers comme binaires (pas de conversions de texte). C'est un raccourci pour ---a.
- -b
- [Tandem] force la création de fichiers avec un code type type 180 (« C ») quand on extrait des entrées Zip marquées comme « texte ». (Sur Tandem, -a est activé par défaut, voir ci-dessous).
- -b
- [VMS] convertit automatiquement les fichiers binaires (voir -a ci-dessus) en enregistrements de longueur fixe de 512-octets. Le doublage de l'option (-bb) force l'extraction de tous les fichiers à ce format.
- -B
- [Unix seulement, et seulement si compilé avec UNIXBACKUP défini] sauve une copie de sauvegarde de chaque fichier écrasé avec un tilde ajouté (ex. l'ancienne copie de « foo » est renommée en « foo~ »). Ceci est similaire au comportement par défaut d'emacs(1).
- -C
- recherche les noms de fichier sans tenir compte de la casse. La philosophie de unzip est « vous avez ce que vous demandez » (c'est aussi pour cela que -L/-U ont changé ; voir les options correspondantes ci-dessus). Comme certains systèmes de fichiers respectent complètement la casse (notamment ceux pour Unix) et comme les archives ZIP et unzip lui-même sont portables sur plusieurs plateformes, le comportement par défaut de unzip est de rechercher le noms et les jokers en respectant la casse. Cela signifie que spécifier « makefile » sur la ligne de commande ne trouvera que « makefile » dans l'archive, pas « Makefile » ou « MAKEFILE » (et similairement pour les jokers). Comme ceci ne correspond pas au comportement de beaucoup d'autres systèmes de fichiers (par exemple OS/2 HPFS, qui préserve la casse mais ne la respecte pas), l'option -C peut être utilisée pour forcer toutes les recherches de noms de fichiers à être insensibles à la casse. Dans l'exemple ci-dessus, les trois fichiers auraient été trouvés pour « makefile » (ou « make* », ou similaire). L'option -C affecte les fichiers de la liste normale mais aussi de la liste d'exclusion (xlist).
- -E
- [MacOS seulement] affiche le contenu du champ supplémentaire MacOS pendant la restauration.
- -F
- [Acorn seulement] supprime l'extension de type NFS des fichiers.
- -F
- [Unix seulement, et seulement si compilé avec ACORN_FTYPE_NFS défini] traduit les informations de type de fichier depuis les extensions ACORN RISC OS vers une extension de type NFS et l'ajoute aux noms des fichiers extraits. (Quand le fichier a déjà une extension de type NFS, elle est remplacée, par l'information du champ supplémentaire.)
- -i
- [MacOS seulement] ignore les noms de fichiers stockés dans le champ supplémentaire MacOS. À la place, le nom le plus compatible de l'en-tête de l'entrée est utilisé.
- -j
- jette le chemin. La structure de dossier contenue dans l'archive n'est pas reconstruite ; tous les fichiers sont mis dans le dossier d'extraction (par défaut, le dossier courant).
- -J
- [BeOS seulement] jette les attributs des fichiers. Les attributs ne sont pas restaurés, seules les données le sont.
- -J
- [MacOS seulement] ignore les champs supplémentaires MacOS. Toute l'information spécifique à MacOS est ignorée. Les parties données et ressource sont restaurées en deux fichiers séparés.
- -L
- convertit en minuscules tout fichier provenant d'un système d'exploitation ou de fichiers qui travaille en majuscules seulement. (C'était le comportement par défaut de unzip pour les versions antérieures à 5.11 ; le nouveau comportement par défaut est identique à l'ancien comportement avec l'option -U, qui est maintenant obsolète et sera supprimée dans une version future. Suivant l'archiveur, les fichiers stockés sous un système mono-casse (VMS, ancienne FAT MS-DOS, etc.) peuvent être stockés tout en majuscules ; ceci peut être laid ou gênant quand on les extrait vers un système qui préserve la casse comme OS/2 HPFS ou ou qui est sensible à la casse comme Unix. Par défaut unzip liste et extrait de tels noms comme ils sont stockés (à l'exception des troncages, conversions de caractères non supportés, etc.) ; cette option provoque la conversion en minuscules des noms de tous les fichiers provenant de certains systèmes.
- -M
- dirige toutes les sorties vers un filtre interne similaire à la commande more(1) sous Unix. À la fin d'un écran plein, unzip s'arrête avec un prompt « --More-- » ; l'écran suivant peut être visualisé en appuyant sur la touche Entrée (Retour Chariot) ou la barre espace. unzip peut être terminé en appuyant sur la touche « q » et, sur certains systèmes, la touche Entrée. Contrairement à la commande Unix more(1), il n'y a pas de capacités de recherche et d'édition. De plus, unzip ne remarque pas si de longues lignes sont coupées au bord de l'écran, ce qui imprimera des lignes supplémentaires et probablement fera défiler vers le haut le texte avant qu'il ne soit vu. Sur certains systèmes le nombre de lignes disponibles sur l'écran n'est pas détecté, auquel cas unzip considère que la hauteur est de 24 lignes.
- -n
- n'écrase jamais les fichiers existants. si un fichier existe, saute son extraction sans afficher de prompt. Par défaut, unzip demande avant d'écraser un fichier qui existe déjà ; l'utilisateur peut choisir d'écraser seulement le fichier courant, écraser tous les fichiers, ne pas extraire le fichier courant, ne pas extraire tous les fichiers existants, ou renommer le fichier courant.
- -N
- [Amiga] extrait les commentaires des fichiers comme des notes de fichiers Amiga. Les commentaires de fichiers sont créés avec l'option -c de zip(1L), ou avec l'option -N sur le port pour Amiga de zip(1L), qui stocke les notes de fichier comme commentaires.
- -o
- écrase les fichiers existants sans prompter. Ceci est une option dangereuse, par conséquent utilisez-la avec attention. (Elle est souvent utilisée avec -f, cependant, et est le seul moyen d'écraser les EA de dossier sous OS/2.)
- -P password
- utilise password pour décrypter des fichiers zip cryptés (le cas échéant). CECI N'EST PAS SÛR ! Beaucoup de systèmes d'exploitation multi-utilisateurs fournissent des outils pour qu'un utilisateur voie la ligne de commande courante d'un autre utilisateur ; même sur un système mono-utilisateur il y a toujours le risque qu'on lise par-dessus votre épaule. Stocker le mot de passe dans la ligne de commande d'un script automatisé est encore pire. quand c'est possible, utilisez toujours le prompt interactif pour entrer les mots de passe. (Et si la sécurité est vraiment importante, utilisez un cryptage fort comme PGP (NDT : ou GnuPG) plutôt que le cryptage relativement faible fournit dans les outils zip standard.)
- -q
- mode silencieux (-qq = encore plus silencieux). Normalement unzip affiche les noms des fichiers qu'il est en train d'extraire ou de tester, la méthode d'extraction, les commentaires éventuels d'archive ou de fichier, et un résumé quand une archive est terminée. L'option -q[q] supprime certains ou tous ces messages.
- -s
- [OS/2, NT, MS-DOS] convertit les espaces dans les noms de fichiers en tiret bas. Comme tous les systèmes d'exploitation PC permettent les espaces dans les noms de fichiers, unzip extrait par défaut les fichiers avec les espaces intacts (ex. « EA DATA. SF »). Ceci peut être gênant, cependant, étant que MS-DOS en particulier ne gère pas correctement les espaces dans les noms de fichiers. La conversion des espaces en tirets bas peut éliminer la gêne dans certains cas.
- -U
- (obsolète ; à supprimer dans les version futures) laisse les noms de fichiers en majuscules s'ils ont été créés sous MS-DOS, VMS, etc. Voir -L ci-dessus.
- -V
- conserve (VMS) les numéros de version de fichier. Les fichiers VMS peuvent être enregistrés avec un numéro de version, au format fichier.ext;##. Par défaut les numéros de version « ;## » sont tronqués, mais cette option permet de les conserver. (Sur des systèmes de fichiers qui limitent les noms à des longueurs particulièrement courtes, les numéros de version peuvent être tronqués ou éliminés malgré cette option.)
- -X
- [VMS, Unix, OS/2, NT] restaure les droits d'utilisateur (UIC)sous VMS, ou les droits d'utilisateur et de groupe (UID/GID) sous Unix, ou les listes de contrôle d'accès (ACL) sous les versions réseau de OS/2 (Warp Server avec IBM LAN Server/Requester 3.0 à 5.0; Warp Connect avec IBM Peer 1.0), ou les ACL de sécurité sous Windows NT. Dans la plupart de cas cela va demander des privilèges système spéciaux, et la répétition de l'option (-XX) sous NT demande à unzip d'utiliser les privilèges pour l'extraction ; mais sous Unix, par exemple, un utilisateur qui appartient à plusieurs groupes peut restaurer des fichiers appartenant à n'importe lequel de ces groupes, dès lors que l'identité de l'utilisateur UID correspond à la sienne. remarquez que les attributs normaux des fichiers sont toujours restaurés - cette option ne s'applique qu'aux attributs particuliers à un système d'exploitation. [Les listes de contrôle d'accès de NT ne semblent pas être spécialement compatibles avec celles de OS/2, donc aucune tentative de conversion des droits entre les plateformes n'est faite. Il n'est de toute manière pas évident que cette conversion soit utile.]
- -$
- [MS-DOS, OS/2, NT] restaure le nom de volume si le support d'extraction est amovible (ex. une disquette). La répétition de l'option (-$$) permet également le nommage de volumes non amovibles (disques durs). Par défaut, les noms de volumes sont ignorés.
- -/ extensions
- [Acorn seulement] écrase la liste d'extensions fournies par la variable d'environnement Unzip$Ext. Pendant l'extraction, les extensions qui correspondent à une de la liste sont mises devant le nom de base du fichier extrait.
OPTIONS D'ENVIRONNEMENT¶
Le comportement par défaut de unzip peut être modifié par des options placées dans une variable d'environnement. Ceci peut être fait pour n'importe quelle option, mais ce n'est probablement très utile que pour les paramètres -a, -L, -C, -q, -o, ou -n : demander à unzip de convertir les fichiers texte par défaut, de convertir depuis les systèmes mono-casse en minuscules, de rechercher les noms sans prendre en compte la casse, de travailler en mode silencieux, ou de toujours ou ne jamais écraser les fichiers existants. Par exemple, pour rendre unzip aussi silencieux que possible, rapportant seulement les erreurs, on utilisera la commande suivante :
UNZIP=-qq; export UNZIP Unix Bourne shell
setenv UNZIP -qq Unix C shell
set UNZIP=-qq OS/2 ou MS-DOS
define UNZIP_OPTS "-qq" VMS (guillemets pour les minuscules)
En effet, les options d'environnement sont considérées comme des paramètres de ligne de commande, mis de fait en premier sur la ligne de commande. Pour écraser une option d'environnement, vous pouvez utiliser « l'opérateur moins » pour l'enlever. Par exemple, pour écraser un des paramètres du mode silencieux de l'exemple ci-dessus, utilisez la commande
unzip --q[autres options] zipfile
Le premier tiret est le caractère de basculement normal, et le second le signe moins, agissant sur l'option q. Ceci enlève un niveau de mode silencieux. Pour annuler les deux niveaux, deux (ou plus) signes moins peuvent être utilisés :
unzip -t--q zipfile
unzip ---qt zipfile
(les deux sont équivalents.) Ceci peut sembler étrange ou confus, mais est raisonablement intuitif : il suffit d'ignorer le premier tiret et de commencer la lecture. C'est aussi le même comportement que la commande Unix nice(1).
Comme suggéré dans les exemples ci-dessus, les noms de variable par défaut sont UNZIP_OPTS pour VMS (où le symbole utilisé pour installer unzip comme commande extérieure aurait été confondu avec la variable d'environnement), et UNZIP pour tous les autres systèmes d'exploitation. Pour être compatible avec zip(1L), UNZIPOPT est aussi accepté (non demandé). Si à la fois UNZIP et UNZIPOPT sont définis, cependant, UNZIP est prioritaire. L'option de diagnostic de unzip (-v sans nom de fichier zip) peut être utilisée pour visualiser les quatre valeurs possibles des variables d'environnement de unzip et zipinfo.
La variable d'environnement de fuseau horaire (TZ) doit être réglée en accord avec le fuseau horaire local afin que les options -f et -u opèrent correctement. Voir la description de -f ci-dessus pour les détails. Cette variable peut aussi être nécessaire pour que les marques de temps sur les fichiers extraits soient faites correctement. Sous Windows 95/NT unzip devrait connaître le fuseau horaire même si TZ n'est pas affectée, s'il est correctement défini dans le panneau de contrôle.
DÉCRYPTAGE¶
Les archives cryptées sont pleinement supportées par les logiciels Info-ZIP, mais de par les restrictions à l'exportation depuis les États-Unis, le support du dé-/cryptage peut être désactivé dans votre exécutable compilé. Cependant, depuis le printemps 2000, les restrictions à l'exportation ont été levées, et nos fichiers source incluent maintenant tout le code de cryptage. si vous avez besoin d'une distribution en binaire avec le cryptage activé, regardez le fichier « WHERE » dans toute distribution de sources ou de binaires Info-ZIP pour les sites aux US ou à l'extérieur.
Quelques compilations de unzip peuvent ne pas supporter le décryptage. Pour le savoir, vous soit essayer d'extraire une archive cryptée, ou lire l'écran de diagnostic de unzip (voir l'option -v) si « [decryption] » est dans les options de compilation.
Comme écrit ci-dessus, l'option -P peut être utilisée pour fournir le mot de passe, au détriment de la sécurité. La meilleure méthode de décryptage est l'extraction normale ; si un fichier est crypté, unzip va prompter une demande de mot de passe sans afficher ce qui est saisi. unzip continue d'utiliser le même mot de passe tant qu'il semble valide, en testant les 12 octets d'en-tête pour chaque fichier. Le mot de passe correct semblera toujours bon lors de ce test, mais il y a une chance sur 256 qu'un mot de passe incorrect semble aussi bon. (Ceci est une caractéristique du format zip de PKWARE ; cela permet de lutter contre les attaques par force de calcul qui obtiendraient un gain de vitesse en ne testant que l'en-tête.) Dans le cas où un mot de passe incorrect passe le test, soit un CRC incorrect est généré pour les données extraites, soit unzip va échouer pendant l'extraction parce que les octets « décryptés » ne seront pas un fichier compressé valide.
Si le premier mot de passe échoue au test de l'en-tête, unzip va prompter une nouvelle demande de mot de passe, et ainsi de suite jusqu'à ce que tous les fichiers soient extraits. Si le mot de passe est inconnu, une saisie nulle (cad. juste un retour chariot) est reçu comme un signal pour ne plus prompter. Seuls les fichiers non cryptés de l'archive seront du coup extraits. (En fait, ce ci n'est pas tout-à-fait vrai ; les anciennes versions de zip(1L) et zipcloak(1L) permettaient les mots de passe vides, donc unzip teste tous les fichiers cryptés pour voir si le mot de passe vide fonctionne. Ceci peut aboutir à des « faux succès » et des erreurs d'extraction, comme mentionné ci-dessus.)
Les archives encryptées avec des mots de passe 8-bit (par exemple, des mots de passe avec des caractères accentués européens) peuvent ne pas être portables sur d'autres systèmes ou archiveurs. Ce problème vient des différentes méthodes d'encodage pour ces caractères, par exemple Latin-1 (ISO 8859-1) et OEM code page 850. PKZIP 2.04g pour DOS utilise le code page OEM; PKZIP 2.50 pour Windows utilise Latin-1 (et est du coup incompatible avecPKZIP pour DOS) ; Info-ZIP utilise le code page OEM sous DOS, OS/2 et Win3.x mais Latin-1 partout ailleurs ; et WinZip 6.x de Nico Mak n'autorise pas les mots de passe 8-bit du tout. UnZip 5.3 essaye d'utiliser le jeu de caractères par défaut (cad. Latin-1), puis l'autre (cad. le code page OEM) pour tester les mots de passe. Sur les systèmes EBCDIC, si les deux précédents échouent, l'encodage EBCDIC est utilisé en dernier ressort. (Comme il n'y a pas d'archiveur connu qui encrypte avec l'encodage EBCDIC, EBCDIC n'est pas testé sur des systèmes non-EBCDIC.) D'autres jeux de caractères ISO que Latin-1 ne sont pas supportés.
EXEMPLES¶
Pour utiliser unzip afin d'extraire tous les membres de l'archive letters.zip dans le dossier courant et ses sous-dossiers, les créant si besoin :
unzip letters
Pour extraire tous les membres de l'archive letters.zip dans le dossier courant seulement :
unzip -j letters
Pour tester letters.zip, en affichant seulement un résumé disant si l'archive est saine ou pas :
unzip -tq letters
Pour tester all les fichiers zip du dossier courant, en n'affichant que les résumés :
unzip -tq \*.zip
(L'anti-slash avant l'astérisque n'est requis que si l'environnement développe les jokers, comme sous Unix ; des guillemets doubles pourraient être utilisés à la place, comme dans les exemples ci-dessous.) Pour extraire vers la sortie standard tous les membres de letters.zip dont les noms se terminent par .tex, en convertissant automatiquement à la convention locale de fin de ligne et renvoyer la sortie vers more(1) :
unzip -ca letters \*.tex | more
Pour extraire le fichier binaire paper1.dvi vers la sortie standard et le renvoyer vers un programme d'impression :
unzip -p articles paper1.dvi | dvips
Pour extraire tous les fichiers source FORTRAN et C --*.f, *.c, *.h, et Makefile-- dans le dossier /tmp :
unzip source.zip "*.[fch]" Makefile -d /tmp
(les guillemets doublés ne sont nécessaires que sous Unix.) Pour extraire tous les fichiers source FORTRAN et C, sans respecter la casse (ex. *.c et *.C, et tout makefile, Makefile, MAKEFILE ou similaire) :
unzip -C source.zip "*.[fch]" makefile -d /tmp
Pour extraire tous ces fichiers mais convertir les noms MS-DOS ou VMS de majuscules en minuscules et convertir les fins de ligne de tous les fichiers au standard local (sans prendre en compte le marquage éventuel en « binaire ») :
unzip -aaCL source.zip "*.[fch]" makefile -d /tmp
Pour extraire seulement les nouvelles versions des fichiers déjà existants dans le dossier courant, sans prompter de questions (REMARQUE : attention au décompactage dans un fuseau horaire différent d'un fichier créé dans un autre - les archives ZIP autres que celles créées par Zip 2.1 ou plus récent ne contiennent pas d'information sur le fuseau horaire, et un fichier « plus récent » d'une autre zone peut, de fait, être plus ancien) :
unzip -fo sources
Pour extraire les nouvelles versions des fichiers déjà existants dans le dossier courant et créer les autres (même risque que pour l'exemple précédent) :
unzip -uo sources
Pour afficher un écran de diagnostic comportant les options de unzip et zipinfo stockées dans les variables d'environnement, si le support de cryptage a été intégré à la compilation, quel compilateur a été utilisé, etc. :
unzip -v
Dans les cinq derniers exemples, il est sous-entendu que UNZIP ou UNZIP_OPTS vaut -q. Pour faire un simple listage silencieux :
unzip -l file.zip
Pour faire un listage ultra silencieux :
unzip -ql file.zip
(Remarquez que le « .zip » est généralement inutile.) Pour faire un listage standard:
unzip --ql file.zip
ou
unzip -l-q file.zip
ou
unzip -l--q file.zip (les tirets en trop ne posent pas de problèmes)
CONSEILS¶
Le mainteneur courant, étant peu occupé, trouve utile de définir une paire d'alias : tt pour « unzip -tq » et ii pour « unzip -Z » (ou « zipinfo »). On peut donc saisir simplement « tt zipfile » pour tester une archive, ce qui est une bonne habitude. Avec un peu de chance unzip va afficher « No errors detected in compressed data of zipfile.zip, » après quoi on peut respirer un bon coup.
Le mainteneur trouve aussi utile de mettre la variable d'environnement UNZIP à « -aL » et est tenté d'ajouter aussi « -C ». Sa variable ZIPINFO est mise à « -z ».
DIAGNOSTICS¶
Les valeurs de retour (ou niveau d'erreur) sont proches de celles définies par PKWARE et prennent les valeurs suivantes, sauf sous VMS :
- 0
- normal ; aucune erreur ou avertissement détecté.
- 1
- un ou plus d'erreurs ont été détectées, mais le processus a été fini avec succès. Ceci inclut les archives où une ou plusieurs entrées n'ont pas été extraites à cause d'une méthode de compression non supportée ou un mot de passe inconnu.
- 2
- une erreur générique dans le fichier zip a été détectée. L'opération peut cependant s'être terminée correctement ; quelques fichiers zip créés avec d'autres archiveurs et abîmés peuvent être simplement corrigés.
- 3
- une erreur grave dans le fichier zip a été détectée. L'opération a probablement immédiatement échoué.
- 4
- unzip n'a pas pu allouer de la mémoire pour un ou plusieurs tampons pendant son initialisation.
- 5
- unzip a manqué de mémoire ou n'a pas pu obtenir une console pour saisir le mot de passe.
- 6
- unzip n'a pas pu allouer de la mémoire pendant la décompression vers le disque.
- 7
- unzip n'a pas pu allouer de la mémoire pendant la décompression en mémoire.
- 8
- [actuellement non utilisé]
- 9
- le fichier zip n'a pas été trouvé.
- 10
- mauvais paramètre(s) dans la ligne de commande.
- 11
- aucun fichier demandé n'a été trouvé dans l'archive zip .
- 50
- le disque est (ou a été) plein pendant l'extraction.
- 51
- fin prématurée du fichier zip.
- 80
- l'utilisateur a interrompu zip prématurement avec contrôle-C (ou similaire)
- 81
- une ou plusieurs entrées n'ont pas été testées ou extraites à cause d'une méthode de compression non supportée ou un mot de passe inconnu.
- 82
- aucun fichier n'a été trouvé car le(s) mot(s) de passe étai(en)t erroné(s). (Si au moins un fichier est extrait, cependant, la valeur de retour est 1.)
VMS interprète les valeurs de retour standard Unix (ou PC) comme d'autres choses, qui n'ont aucun rapport, donc zip les remplace par des codes de statut du style VMS. Le remplacement se fait de manière suivante : 1 (succès) pour une sortie normale, 0x7fff0001 pour les avertissements, et (0x7fff000? + 16*code_de_retour_normal_de_unzip) pour toutes les autres erreurs, où le `?' est 2 (erreur) pour les valeurs unzip de 2, 9-11 et 80-82, et 4 (erreur fatale) pour les restantes(3-8, 50, 51). De plus, il y a une option de compilation pour étendre ce comportement : la définition de RETURN_CODES donne un explication humaine lisible du sens de la valeur de retour.
BOGUES¶
Les archives morcelées ne sont pas encore supportées, sauf avec l'aide de zip. (Tous les morceaux doivent être concaténés ensemble dans l'ordre, puis « zip -F » doit être effectué sur l'archive pour la « réparer ».) Ceci sera corrigé dans la prochaine version majeure.
Les archives lues à partir de l'entrée standard ne sont pas encore supportées, sauf avec funzip (et même ainsi seul le premier membre de l'archive est extrait).
Les archives encryptées avec des mots de passe 8-bit (par exemple, des mots de passe avec des caractères accentués européens) peuvent ne pas être portables sur d'autres systèmes ou archiveurs. Voir les détails dans DECRYPTION ci-dessus.
L'option d'unzip -M (« more ») est trop simpliste dans sa gestion des sorties écran ; comme mentionné ci-dessus, elle ne détecte pas le sauts de ligne occasionnés par les longues lignes et peut par conséquent effacer certaines lignes avant qu'elles aient pu être lues. unzip devrait détecter et traiter chaque cas de ligne trop longue comme une ligne supplémentaire affichée. Ceci requiert la connaissance de la largeur et de la hauteur de l'affichage. De plus, unzip devrait détecter la vraie géométrie de l'affichage sur tous les systèmes.
Les dates, heures et droits des dossier ne sont restaurés que sous Unix.
[MS-DOS] Quand on teste ou extrait des fichiers depuis une disquette défectueuse, si l'option « Échec » est choisie depuis le message DOS « Annuler, Ressayer, Echec? » les anciennes versions de unzip peuvent bloquer le système, exigeant un redémarrage. Ce problème est réglé, mais Contrôle-c (ou Contrôle-Attn) peut toujours être utilisé pour terminer unzip.
Sous DEC Ultrix, unzip échouait parfois sur des grandes archives (mauvais CRC, pas toujours reproductible). Ceci était apparemment dû à un bogue matériel (mémoire cache) ou du système d'exploitation (mauvaise gestion des erreurs de pagination ?). Comme Ultrix a été abandonné pour Digital Unix (OSF/1), ceci ne devrait plus être un problème.
[Unix] Les fichiers spéciaux Unix tels les tampons FIFO (tubes nommés), les périphériques de blocs et de caractères ne sont pas restaurés même s'ils sont quelque peu représentés dans l'archive zip, de même que les fichiers liés ne sont pas re-liés. Basiquement les seuls fichiers restaurés par unzip sont les fichiers réguliers, les dossiers, les liens symboliques.
[OS/2] Les Attributs Étendus pour des dossier existants ne sont mis à jour que si l'option -o (« écraser tout ») est donnée. Ceci est une limitation du système d'exploitation ; comme les dossiers n'ont qu'une heure de création, unzip ne peut pas déterminer si les attributs d'un dossier sont plus récents ou pas que ceux du dossier sur le disque. En pratique ceci peut signifier qu'un traitement en deux passes est requis : d'abord décompacter l'archive normalement (avec ou sans rafraîchissement des fichiers existants), puis on écrase seulement les entrées de dossier (ex. « unzip -o foo */ »).
[VMS] Quand on extrait vers un autre dossier, seule la syntaxe [.foo] est acceptée par l'option -d ; la syntaxe simple d'Unix foo est silencieusement ignorée (de même que la syntaxe moins commune de VMS foo.dir).
[VMS] Quand le fichier extrait existe déjà, le prompt de unzip ne permet que d'annuler, écraser ou renommer ; il devrait y avoir un choix supplémentaire pour créer une nouvelle version du fichier. En fait, le choix écraser crée une nouvelle version ; l'ancienne version n'est ni écrasée ni supprimée.
VOIR AUSSI¶
funzip(1), zip(1), zipcloak(1), zipgrep(1), zipinfo(1), zipnote(1), zipsplit(1)
URL¶
La page d'Info-ZIP est actuellement sur ftp://ftp.info-zip.org/pub/infozip/ .
AUTEURS¶
Les premiers auteurs d'Info-ZIP (actuellement membres semi-actifs du groupe Zip-Bugs) sont : Greg « Cave Newt » Roelofs (UnZip) ; Onno van der Linden (Zip); Jean-loup Gailly (compactage); Mark Adler (décompactage, fUnZip) ; Christian Spieler (coordination de la maintenance de UnZip, VMS, MS-DOS, Windows 95, NT, code partagé, intégration générale de Zip et UnZip et optimisation) ; Mike White (Windows GUI, Windows DLLs) ; Kai Uwe Rommel (OS/2) ; Paul Kienitz (Amiga, Windows 95); Chris Herborth (BeOS, QNX, Atari) ; Jonathan Hudson (SMS/QDOS) ; Sergio Monesi (Acorn RISC OS); Harald Denker (Atari, MVS) ; John Bush (Solaris, Amiga); Hunter Goatley (VMS); Steve Salisbury (Windows 95, NT) ; Steve Miller (Windows CE GUI), Johnny Lee (MS-DOS, Windows 95, NT) ; et Dave Smith (Tandem NSK). L'auteur du code originel de unzip sur lequel Info-ZIP a été basé est Samuel H. Smith ; Carl Mascott a fait le premier port sur Unix ; et David P. Kirschbaum a organisé et conduit Info-ZIP dans les premiers temps avec Keith Petersen qui hébergeait la liste de diffusion originelle sur WSMR-SimTel20. La liste complète de contributeurs pour UnZip est devenue assez grande ; veuillez vous référer au fichier CONTRIBS dans la distribution du source Unzip pour une version relativement complète.
VERSIONS¶
- v1.2 15 Mar 89
- Samuel H. Smith
- v2.0 9 Sep 89
- Samuel H. Smith
- v2.x fall 1989
- beaucoup de contributeurs Usenet
- v3.0 1 May 90
- Info-ZIP (DPK, consolideur)
- v3.1 15 Aug 90
- Info-ZIP (DPK, consolideur)
- v4.0 1 Dec 90
- Info-ZIP (GRR, maintenance)
- v4.1 12 May 91
- Info-ZIP
- v4.2 20 Mar 92
- Info-ZIP (Zip-Bugs sous-groupe, GRR)
- v5.0 21 Aug 92
- Info-ZIP (Zip-Bugs sous-groupe, GRR)
- v5.01 15 Jan 93
- Info-ZIP (Zip-Bugs sous-groupe, GRR)
- v5.1 7 Feb 94
- Info-ZIP (Zip-Bugs sous-groupe, GRR)
- v5.11 2 Aug 94
- Info-ZIP (Zip-Bugs sous-groupe, GRR)
- v5.12 28 Aug 94
- Info-ZIP (Zip-Bugs sous-groupe, GRR)
- v5.2 30 Apr 96
- Info-ZIP (Zip-Bugs sous-groupe, GRR)
- v5.3 22 Apr 97
- Info-ZIP (Zip-Bugs sous-groupe, GRR)
- v5.31 31 May 97
- Info-ZIP (Zip-Bugs sous-groupe, GRR)
- v5.32 3 Nov 97
- Info-ZIP (Zip-Bugs sous-groupe, GRR)
- v5.4 28 Nov 98
- Info-ZIP (Zip-Bugs sous-groupe, SPC)
- v5.41 16 Apr 00
- Info-ZIP (Zip-Bugs sous-groupe, SPC)
16 avril 2000 | Info-ZIP (v5.41) |